#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

void handler(int signo)
{
    std::cout<<"get a signal : "<<signo<<std::endl;
    int n=alarm(5);
    std::cout<<n<<std::endl;
}

int main()
{
    // pid_t id = fork();
    // if (id == 0)
    // {
    //     // child
    //     int cnt = 500;
    //     while (cnt--)
    //     {
    //         std::cout << "I am a child id : " << getpid() << std::endl;
    //         sleep(1);
    //     }
    //     exit(0);
    // }

    // // parent
    // int status = 0;
    // pid_t rid = waitpid(id, &status, 0);
    // if (rid == id)
    // {AAa
    //     std::cout << "wait sucess , " << "exit code : " << ((status >> 8) & 0XFF) << " exit signal : " << (status & 0X7F) << " core dump : " << ((status >> 7) & 1) << std::endl;
    // }

    // return 0;

    // 
    
    //软件条件--闹钟
    signal(SIGALRM,handler);
    int n=alarm(50);

    while(true)
    {
        std::cout<<"I am a process : "<<getpid()<<std::endl;
        sleep(1);
    }


    return 0;
}